// 微信小程序并不直接支持浏览器的 localStorage API，因此你需要使用微信提供的存储接口来代替。此外，考虑到微信小程序和 H5 环境之间的差异，最好使用条件编译来区分不同平台的代码。
// 引入插件
// 通过检查 wx 对象是否存在并且有 setStorageSync 方法，来判断当前环境是否为微信小程序。如果是，则使用微信提供的存储方法；否则，继续使用浏览器的 localStorage。

import { createApp } from 'vue';  // 使用 createApp 来替代 Vue.use()
import { createStore } from 'vuex';  // Vuex 4.x 的创建方式
import createPersistedState from "vuex-persistedstate";
import user from './modules/user.js';

const store = createStore({
  modules: {
    user
  },
  plugins: [
    createPersistedState({
      storage: (typeof wx !== 'undefined' && wx.setStorageSync) ? {
        getItem: (key) => {
          try {
            return wx.getStorageSync(key);
          } catch (e) {
            console.error('Failed to get item from storage:', e);
          }
        },
        setItem: (key, value) => {
          try {
            wx.setStorageSync(key, value);
          } catch (e) {
            console.error('Failed to set item in storage:', e);
          }
        },
        removeItem: (key) => {
          try {
            wx.removeStorageSync(key);
          } catch (e) {
            console.error('Failed to remove item from storage:', e);
          }
        }
      } : window.localStorage,
      key: "xiaoluxian_store",
      serialize: state => JSON.stringify({ ...state }),
      deserialize: str => JSON.parse(str)
    })
  ]
});

// 创建应用实例并挂载 store
const app = createApp(App);  // 假设 App 是你的根组件
app.use(store);
app.mount('#app');